Skip to main content

Logistics Truck Scheduling

·545 words·3 mins
Python Numpy Docker CI/CD Django Web-UI Vue.js JavaScript Data Scientist Git

In this project, an application was developed to optimize the allocation of trucks to loading ramps. The goal of the application was to increase the efficiency of loading operations by optimizing the assignment of trucks to available ramps based on various factors such as arrival time and preparation time.

Initial situation: Scheduling problem #

The scheduling problem was to plan the allocation of trucks to loading docks in a way that would ensure smooth and efficient operations. The challenge was to coordinate multiple trucks and ramps, taking into account both the estimated time of arrival (ETA) and the required loading and preparation time.

Telemetry data as the basis #

The optimization was based on telemetry data from the trucks, which was continuously transmitted. The data contained information such as the current position of the trucks, speeds and calculated Estimated Time of Arrival (ETA). This data was used in combination with the information about the duration of loading and the time to prepare the loading ramps to calculate an optimal allocation.

Optimization algorithm in the backend #

The backend of the application was developed with Django and contained the optimization algorithm that calculated the allocation of trucks to the loading docks based on the available data. The algorithm took into account both the ETA and the specific requirements of the loading bays and trucks. This led to a dynamic and efficient planning of the loading process.

Visualization of the results #

The results of the optimization were displayed in a web frontend. A Gantt chart was used to visualize the assignments, which enabled a clear representation of the loading processes. Each bar in the Gantt chart represented an assignment of a truck to a ramp and showed the planned loading period.

--- displayMode: compact --- gantt title Assignment of trucks to loading ramps dateFormat HH:mm axisFormat %H:%M section Ramp 1 Truck 1 :a1, 08:00, 09:00 Truck 2 :a2, 09:15, 10:15 Truck 3 :a3, 10:34, 11:34 Truck 4 :a4, 11:59, 12:59 section Ramp 2 Truck 5 :b1, 08:15, 09:15 Truck 6 :b2, 09:15, 10:15 Truck 7 :b2, 11:15, 13:15 section Ramp 3 Truck 8 :c1, 08:07, 09:07 Truck 9 :c2, 10:02, 12:37

Frontend #

The frontend of the application was developed using Vue.js and Vuetify to provide an engaging and user-friendly interface. Users were able to view scheduled load times and ramp assignments in real time in the Gantt chart and make changes or adjustments as needed.

Deployment with Docker #

The entire application was deployed in Docker containers to ensure a flexible and scalable infrastructure. This allowed for easy deployment and management of the various components of the application, from data processing to the user interface.

Conclusion #

The developed application enabled efficient allocation of trucks to loading docks by incorporating ETA, loading and preparation times into the allocation process. Visualization with gantt charts and real-time communication between backend and frontend improved the usability and management of the loading processes. Deploying the application in Docker containers also created a scalable and flexible solution for operations.

Activities #

  • Development of a web frontend to display the optimization results with Vue.js, Vuetify and Django
  • Implementation of data visualizations in the frontend
  • Implementation of server sent events for asynchronous notification of the client about new optimization results
  • Containerization of the application (frontend and backend) with Docker